package com.linekong.mmo.navmesh;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.util.List;

public class RecastLibDemo
{
	public static void main(String[] args)
	{

		RecastLib recast = new RecastLib();

		int meshId = recast.loadFromPath("srv_ex02.navmesh");
		if (meshId <= 0)
		{
			System.out.println("load navmesh failed");
		}
		else
		{
			System.out.println(meshId);
		}

		float[] start = new float[3];
		start[0] = 18.4f;
		start[1] = 99.0f;
		start[2] = 19.6f;

		float[] end = new float[3];
		end[0] = 400.0f;
		end[1] = 0.0f;
		end[2] = 400.0f;

		// List<float[]> list = recast.findStraightPath(meshId, start[0],
		// start[1], start[2], end[0], end[1], end[2]);
		//
		// if (list != null)
		// {
		// for (float[] f : list)
		// {
		// System.out.println(f[0] + " " + f[1] + " " + f[2]);
		// }
		// }
		// else
		// {
		// System.out.println("list is null");
		// }

		float[] height = recast.getPolyHeight(meshId, start[0], start[1], start[2]);
		if (height != null && height.length > 0)
		{
			System.out.println(height[0]);
		}

		// boolean result = recast.isPositionWalkable(meshId, start[0],
		// start[1], start[2]);
		// if (result)
		// {
		// System.out.println("is walkable");
		// }
		// else
		// {
		// System.out.println("not walkable");
		// }

		// if (recast.raycast(meshId, start[0], start[1], start[2], end[0],
		// end[1], end[2]))
		// {
		// System.out.println("success");
		// }
		// else
		// {
		// System.out.println("failed");
		// }

		// float[] resultPoint = recast.moveAlongSurface(meshId, start[0],
		// start[1], start[2], start[0] + 0.1f, start[1], start[2]);
		// if (resultPoint != null && resultPoint.length > 0)
		// {
		// System.out.println(resultPoint[0]);
		// System.out.println(resultPoint[1]);
		// System.out.println(resultPoint[2]);
		// }
	}
}
